1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 import java.security.*;
34 import javax.crypto.*;
35 import javax.crypto.spec.*;
36 import java.math.*;
37 import com.sun.crypto.provider.*;
38
39 import java.util.*;
40
41 public class TestKATForECB_VK
42 {
43 private static final String ALGO = "AES";
44 private static final String MODE = "ECB";
45 private static final String PADDING = "NoPadding";
46
47
48 private static byte[] PT = new byte[16];
49
50 private static String[][] CTS = {
51
52 {
53 "0EDD33D3C621E546455BD8BA1418BEC8",
54 "C0CC0C5DA5BD63ACD44A80774FAD5222",
55 "2F0B4B71BC77851B9CA56D42EB8FF080",
56 "6B1E2FFFE8A114009D8FE22F6DB5F876",
57 "9AA042C315F94CBB97B62202F83358F5",
58 "DBE01DE67E346A800C4C4B4880311DE4",
59 "C117D2238D53836ACD92DDCDB85D6A21",
60 "DC0ED85DF9611ABB7249CDD168C5467E",
61 "807D678FFF1F56FA92DE3381904842F2",
62 "0E53B3FCAD8E4B130EF73AEB957FB402",
63 "969FFD3B7C35439417E7BDE923035D65",
64 "A99B512C19CA56070491166A1503BF15",
65 "6E9985252126EE344D26AE369D2327E3",
66 "B85F4809F904C275491FCDCD1610387E",
67 "ED365B8D7D20C1F5D53FB94DD211DF7B",
68 "B3A575E86A8DB4A7135D604C43304896",
69 "89704BCB8E69F846259EB0ACCBC7F8A2",
70 "C56EE7C92197861F10D7A92B90882055",
71 "92F296F6846E0EAF9422A5A24A08B069",
72 "E67E32BB8F11DEB8699318BEE9E91A60",
73 "B08EEF85EAF626DD91B65C4C3A97D92B",
74 "661083A6ADDCE79BB4E0859AB5538013",
75 "55DFE2941E0EB10AFC0B333BD34DE1FE",
76 "6BFE5945E715C9662609770F8846087A",
77 "79848E9C30C2F8CDA8B325F7FED2B139",
78 "7A713A53B99FEF34AC04DEEF80965BD0",
79 "18144A2B46620D32C3C32CE52D49257F",
80 "872E827C70887C80749F7B8BB1847C7E",
81 "6B86C6A4FE6A60C59B1A3102F8DE49F3",
82 "9848BB3DFDF6F532F094679A4C231A20",
83 "925AD528E852E329B2091CD3F1C2BCEE",
84 "80DF436544B0DD596722E46792A40CD8",
85 "525DAF18F93E83E1E74BBBDDE4263BBA",
86 "F65C9D2EE485D24701FFA3313B9D5BE6",
87 "E4FC8D8BCA06425BDF94AFA40FCC14BA",
88 "A53F0A5CA1E4E6440BB975FF320DE6F8",
89 "D55313B9394080462E87E02899B553F0",
90 "34A71D761F71BCD344384C7F97D27906",
91 "233F3D819599612EBC89580245C996A8",
92 "B4F1374E5268DBCB676E447529E53F89",
93 "0816BD27861D2BA891D1044E39951E96",
94 "F3BE9EA3F10C73CA64FDE5DB13A951D1",
95 "2448086A8106FBD03048DDF857D3F1C8",
96 "670756E65BEC8B68F03D77CDCDCE7B91",
97 "EF968CF0D36FD6C6EFFD225F6FB44CA9",
98 "2E8767157922E3826DDCEC1B0CC1E105",
99 "78CE7EEC670E45A967BAB17E26A1AD36",
100 "3C5CEE825655F098F6E81A2F417DA3FB",
101 "67BFDB431DCE1292200BC6F5207ADB12",
102 "7540FD38E447C0779228548747843A6F",
103 "B85E513301F8A936EA9EC8A21A85B5E6",
104 "04C67DBF16C11427D507A455DE2C9BC5",
105 "03F75EB8959E55079CFFB4FF149A37B6",
106 "74550287F666C63BB9BC7838433434B0",
107 "7D537200195EBC3AEFD1EAAB1C385221",
108 "CE24E4D40C68A82B535CBD3C8E21652A",
109 "AB20072405AA8FC40265C6F1F3DC8BC0",
110 "6CFD2CF688F566B093F67B9B3839E80A",
111 "BD95977E6B7239D407A012C5544BF584",
112 "DF9C0130AC77E7C72C997F587B46DBE0",
113 "E7F1B82CADC53A648798945B34EFEFF2",
114 "932C6DBF69255CF13EDCDB72233ACEA3",
115 "5C76002BC7206560EFE550C80B8F12CC",
116 "F6B7BDD1CAEEBAB574683893C4475484",
117 "A920E37CC6DC6B31DA8C0169569F5034",
118 "919380ECD9C778BC513148B0C28D65FD",
119 "EE67308DD3F2D9E6C2170755E5784BE1",
120 "3CC73E53B85609023A05E149B223AE09",
121 "983E8AF7CF05EBB28D71EB841C9406E6",
122 "0F3099B2D31FA5299EE5BF43193287FC",
123 "B763D84F38C27FE6931DCEB6715D4DB6",
124 "5AE3C9B0E3CC29C0C61565CD01F8A248",
125 "F58083572CD90981958565D48D2DEE25",
126 "7E6255EEF8F70C0EF10337AAB1CCCEF8",
127 "AAD4BAC34DB22821841CE2F631961902",
128 "D7431C0409BB1441BA9C6858DC7D4E81",
129 "EF9298C65E339F6E801A59C626456993",
130 "53FE29F68FF541ABC3F0EF3350B72F7E",
131 "F6BBA5C10DB02529E2C2DA3FB582CC14",
132 "E4239AA37FC531A386DAD1126FC0E9CD",
133 "8F7758F857D15BBE7BFD0E416404C365",
134 "D273EB57C687BCD1B4EA7218A509E7B8",
135 "65D64F8D76E8B3423FA25C4EB58A210A",
136 "623D802B4EC450D66A16625702FCDBE0",
137 "7496460CB28E5791BAEAF9B68FB00022",
138 "34EA600F18BB0694B41681A49D510C1D",
139 "5F8FF0D47D5766D29B5D6E8F46423BD8",
140 "225F9286C5928BF09F84D3F93F541959",
141 "B21E90D25DF383416A5F072CEBEB1FFB",
142 "4AEFCDA089318125453EB9E8EB5E492E",
143 "4D3E75C6CD40EC4869BC85158591ADB8",
144 "63A8B904405436A1B99D7751866771B7",
145 "64F0DAAE47529199792EAE172BA53293",
146 "C3EEF84BEA18225D515A8C852A9047EE",
147 "A44AC422B47D47B81AF73B3E9AC9596E",
148 "D16E04A8FBC435094F8D53ADF25F5084",
149 "EF13DC34BAB03E124EEAD8B6BF44B532",
150 "D94799075C24DCC067AF0D392049250D",
151 "14F431771EDDCE4764C21A2254B5E3C8",
152 "7039329F36F2ED682B02991F28D64679",
153 "124EE24EDE5551639DB8B8B941F6141D",
154 "C2852879A34D5184E478EC918B993FEE",
155 "86A806A3525B93E432053C9AB5ABBEDF",
156 "C1609BF5A4F07E37C17A36366EC23ECC",
157 "7E81E7CB92159A51FFCEA331B1E8EA53",
158 "37A7BE002856C5A59A6E03EAFCE7729A",
159 "BDF98A5A4F91E890C9A1D1E5FAAB138F",
160 "4E96ACB66E051F2BC739CC3D3E34A26B",
161 "EE996CDD120EB86E21ECFA49E8E1FCF1",
162 "61B9E6B579DBF6070C351A1440DD85FF",
163 "AC369E484316440B40DFC83AA96E28E7",
164 "0A2D16DE985C76D45C579C1159413BBE",
165 "DA3FDC38DA1D374FA4802CDA1A1C6B0F",
166 "B842523D4C41C2211AFE43A5800ADCE3",
167 "9E2CDA90D8E992DBA6C73D8229567192",
168 "D49583B781D9E20F5BE101415957FC49",
169 "EF09DA5C12B376E458B9B8670032498E",
170 "A96BE0463DA774461A5E1D5A9DD1AC10",
171 "32CEE3341060790D2D4B1362EF397090",
172 "21CEA416A3D3359D2C4D58FB6A035F06",
173 "172AEAB3D507678ECAF455C12587ADB7",
174 "B6F897941EF8EBFF9FE80A567EF38478",
175 "A9723259D94A7DC662FB0C782CA3F1DD",
176 "2F91C984B9A4839F30001B9F430493B4",
177 "0472406345A610B048CB99EE0EF3FA0F",
178 "F5F39086646F8C05ED16EFA4B617957C",
179 "26D50F485A30408D5AF47A5736292450",
180 "0545AAD56DA2A97C3663D1432A3D1C84"
181 },
182
183 {
184 "DE885DC87F5A92594082D02CC1E1B42C",
185 "C749194F94673F9DD2AA1932849630C1",
186 "0CEF643313912934D310297B90F56ECC",
187 "C4495D39D4A553B225FBA02A7B1B87E1",
188 "636D10B1A0BCAB541D680A7970ADC830",
189 "07CF045786BD6AFCC147D99E45A901A7",
190 "6A8E3F425A7599348F95398448827976",
191 "5518276836148A00D91089A20D8BFF57",
192 "F267E07B5E87E3BC20B969C61D4FCB06",
193 "5A1CDE69571D401BFCD20DEBADA2212C",
194 "70A9057263254701D12ADD7D74CD509E",
195 "35713A7E108031279388A33A0FE2E190",
196 "E74EDE82B1254714F0C7B4B243108655",
197 "39272E3100FAA37B55B862320D1B3EB3",
198 "6D6E24C659FC5AEF712F77BCA19C9DD0",
199 "76D18212F972370D3CC2C6C372C6CF2F",
200 "B21A1F0BAE39E55C7594ED570A7783EA",
201 "77DE202111895AC48DD1C974B358B458",
202 "67810B311969012AAF7B504FFAF39FD1",
203 "C22EA2344D3E9417A6BA07843E713AEA",
204 "C79CAF4B97BEE0BD0630AB354539D653",
205 "135FD1AF761D9AE23DF4AA6B86760DB4",
206 "D4659D0B06ACD4D56AB8D11A16FD83B9",
207 "F7D270028FC188E4E4F35A4AAA25D4D4",
208 "345CAE5A8C9620A9913D5473985852FF",
209 "4E8980ADDE60B0E42C0B287FEA41E729",
210 "F11B6D74E1F15155633DC39743C1A527",
211 "9C87916C0180064F9D3179C6F5DD8C35",
212 "71AB186BCAEA518E461D4F7FAD230E6A",
213 "C4A31BBC3DAAF742F9141C2A5001A49C",
214 "E7C47B7B1D40F182A8928C8A55671D07",
215 "8E17F294B28FA373C6249538868A7EEF",
216 "754404096A5CBC08AF09491BE249141A",
217 "101CB56E55F05D86369B6D1069204F0A",
218 "73F19BB6604205C6EE227B9759791E41",
219 "6270C0028F0D136C37A56B2CB64D24D6",
220 "A3BF7C2C38D1114A087ECF212E694346",
221 "49CABFF2CEF7D9F95F5EFB1F7A1A7DDE",
222 "EC7F8A47CC59B849469255AD49F62752",
223 "68FAE55A13EFAF9B07B3552A8A0DC9D1",
224 "211E6B19C69FAEF481F64F24099CDA65",
225 "DBB918C75BC5732416F79FB0C8EE4C5C",
226 "98D494E5D963A6C8B92536D3EC35E3FD",
227 "C9A873404D403D6F074190851D67781A",
228 "073AEF4A7C77D921928CB0DD9D27CAE7",
229 "89BDE25CEE36FDE769A10E52298CF90F",
230 "26D0842D37EAD38557C65E0A5E5F122E",
231 "F8294BA375AF46B3F22905BBAFFAB107",
232 "2AD63EB4D0D43813B979CF72B35BDB94",
233 "7710C171EE0F4EFA39BE4C995180181D",
234 "C0CB2B40DBA7BE8C0698FAE1E4B80FF8",
235 "97970E505194622FD955CA1B80B784E9",
236 "7CB1824B29F850900DF2CAD9CF04C1CF",
237 "FDF4F036BB988E42F2F62DE63FE19A64",
238 "08908CFE2C82606B2C15DF61B75CF3E2",
239 "B3AA689EF2D07FF365ACB9ADBA2AF07A",
240 "F2672CD8EAA3B98776660D0263656F5C",
241 "5BDEAC00E986687B9E1D94A0DA7BF452",
242 "E6D57BD66EA1627363EE0C4B711B0B21",
243 "03730DD6ACB4AD9996A63BE7765EC06F",
244 "A470E361AA5437B2BE8586D2F78DE582",
245 "7567FEEFA559911FD479670246B484E3",
246 "29829DEA15A4E7A4C049045E7B106E29",
247 "A407834C3D89D48A2CB7A152208FA4ED",
248 "68F948053F78FEF0D8F9FE7EF3A89819",
249 "B605174CAB13AD8FE3B20DA3AE7B0234",
250 "CCAB8F0AEBFF032893996D383CBFDBFA",
251 "AF14BB8428C9730B7DC17B6C1CBEBCC8",
252 "5A41A21332040877EB7B89E8E80D19FE",
253 "AC1BA52EFCDDE368B1596F2F0AD893A0",
254 "41B890E31B9045E6ECDC1BC3F2DB9BCC",
255 "4D54A549728E55B19A23660424A0F146",
256 "A917581F41C47C7DDCFFD5285E2D6A61",
257 "604DF24BA6099B93A7405A524D764FCB",
258 "78D9D156F28B190E232D1B7AE7FC730A",
259 "5A12C39E442CD7F27B3CD77F5D029582",
260 "FF2BF2F47CF7B0F28EE25AF95DBF790D",
261 "1863BB7D193BDA39DF090659EB8AE48B",
262 "38178F2FB4CFCF31E87E1ABCDC023EB5",
263 "F5B13DC690CC0D541C6BA533023DC8C9",
264 "48EC05238D7375D126DC9D08884D4827",
265 "ACD0D81139691B310B92A6E377BACC87",
266 "9A4AA43578B55CE9CC178F0D2E162C79",
267 "08AD94BC737DB3C87D49B9E01B720D81",
268 "3BCFB2D5D210E8332900C5991D551A2A",
269 "C5F0C6B9397ACB29635CE1A0DA2D8D96",
270 "844A29EFC693E2FA9900F87FBF5DCD5F",
271 "5126A1C41051FEA158BE41200E1EA59D",
272 "302123CA7B4F46D667FFFB0EB6AA7703",
273 "A9D16BCE7DB5C024277709EE2A88D91A",
274 "F013C5EC123A26CFC34B598C992A996B",
275 "E38A825CD971A1D2E56FB1DBA248F2A8",
276 "6E701773C0311E0BD4C5A097406D22B3",
277 "754262CEF0C64BE4C3E67C35ABE439F7",
278 "C9C2D4C47DF7D55CFA0EE5F1FE5070F4",
279 "6AB4BEA85B172573D8BD2D5F4329F13D",
280 "11F03EF28E2CC9AE5165C587F7396C8C",
281 "0682F2EB1A68BAC7949922C630DD27FA",
282 "ABB0FEC0413D659AFE8E3DCF6BA873BB",
283 "FE86A32E19F805D6569B2EFADD9C92AA",
284 "E434E472275D1837D3D717F2EECC88C3",
285 "74E57DCD12A21D26EF8ADAFA5E60469A",
286 "C275429D6DAD45DDD423FA63C816A9C1",
287 "7F6EC1A9AE729E86F7744AED4B8F4F07",
288 "48B5A71AB9292BD4F9E608EF102636B2",
289 "076FB95D5F536C78CBED3181BCCF3CF1",
290 "BFA76BEA1E684FD3BF9256119EE0BC0F",
291 "7D395923D56577F3FF8670998F8C4A71",
292 "BA02C986E529AC18A882C34BA389625F",
293 "3DFCF2D882AFE75D3A191193013A84B5",
294 "FAD1FDE1D0241784B63080D2C74D236C",
295 "7D6C80D39E41F007A14FB9CD2B2C15CD",
296 "7975F401FC10637BB33EA2DB058FF6EC",
297 "657983865C55A818F02B7FCD52ED7E99",
298 "B32BEB1776F9827FF4C3AC9997E84B20",
299 "2AE2C7C374F0A41E3D46DBC3E66BB59F",
300 "4D835E4ABDD4BDC6B88316A6E931A07F",
301 "E07EFABFF1C353F7384EBB87B435A3F3",
302 "ED3088DC3FAF89AD87B4356FF1BB09C2",
303 "4324D01140C156FC898C2E32BA03FB05",
304 "BE15D016FACB5BAFBC24FA9289132166",
305 "AC9B7048EDB1ACF4D97A5B0B3F50884B",
306 "448BECE1F86C7845DFA9A4BB2A016FB3",
307 "10DD445E87686EB46EA9B1ABC49257F0",
308 "B7FCCF7659FA756D4B7303EEA6C07458",
309 "289117115CA3513BAA7640B1004872C2",
310 "57CB42F7EE7186051F50B93FFA7B35BF",
311 "F2741BFBFB81663B9136802FB9C3126A",
312 "E32DDDC5C7398C096E3BD535B31DB5CE",
313 "81D3C204E608AF9CC713EAEBCB72433F",
314 "D4DEEF4BFC36AAA579496E6935F8F98E",
315 "C356DB082B97802B038571C392C5C8F6",
316 "A3919ECD4861845F2527B77F06AC6A4E",
317 "A53858E17A2F802A20E40D44494FFDA0",
318 "5D989E122B78C758921EDBEEB827F0C0",
319 "4B1C0C8F9E7830CC3C4BE7BD226FA8DE",
320 "82C40C5FD897FBCA7B899C70713573A1",
321 "ED13EE2D45E00F75CCDB51EA8E3E36AD",
322 "F121799EEFE8432423176A3CCF6462BB",
323 "4FA0C06F07997E98271DD86F7B355C50",
324 "849EB364B4E81D058649DC5B1BF029B9",
325 "F48F9E0DE8DE7AD944A207809335D9B1",
326 "E59E9205B5A81A4FD26DFCF308966022",
327 "3A91A1BE14AAE9ED700BDF9D70018804",
328 "8ABAD78DCB79A48D79070E7DA89664EC",
329 "B68377D98AAE6044938A7457F6C649D9",
330 "E4E1275C42F5F1B63D662C099D6CE33D",
331 "7DEF32A34C6BE668F17DA1BB193B06EF",
332 "78B6000CC3D30CB3A74B68D0EDBD2B53",
333 "0A47531DE88DD8AE5C23EAE4F7D1F2D5",
334 "667B24E8000CF68231EC484581D922E5",
335 "39DAA5EBD4AACAE130E9C33236C52024",
336 "E3C88760B3CB21360668A63E55BB45D1",
337 "F131EE903C1CDB49D416866FD5D8DE51",
338 "7A1916135B0447CF4033FC13047A583A",
339 "F7D55FB27991143DCDFA90DDF0424FCB",
340 "EA93E7D1CA1111DBD8F7EC111A848C0C",
341 "2A689E39DFD3CBCBE221326E95888779",
342 "C1CE399CA762318AC2C40D1928B4C57D",
343 "D43FB6F2B2879C8BFAF0092DA2CA63ED",
344 "224563E617158DF97650AF5D130E78A5",
345 "6562FDF6833B7C4F7484AE6EBCC243DD",
346 "93D58BA7BED22615D661D002885A7457",
347 "9A0EF559003AD9E52D3E09ED3C1D3320",
348 "96BAF5A7DC6F3DD27EB4C717A85D261C",
349 "B8762E06884900E8452293190E19CCDB",
350 "785416A22BD63CBABF4B1789355197D3",
351 "A0D20CE1489BAA69A3612DCE90F7ABF6",
352 "700244E93DC94230CC607FFBA0E48F32",
353 "85329E476829F872A2B4A7E59F91FF2D",
354 "E4219B4935D988DB719B8B8B2B53D247",
355 "6ACDD04FD13D4DB4409FE8DD13FD737B",
356 "9EB7A670AB59E15BE582378701C1EC14",
357 "29DF2D6935FE657763BC7A9F22D3D492",
358 "99303359D4A13AFDBE6C784028CE533A",
359 "FF5C70A6334545F33B9DBF7BEA0417CA",
360 "289F58A17E4C50EDA4269EFB3DF55815",
361 "EA35DCB416E9E1C2861D1682F062B5EB",
362 "3A47BF354BE775383C50B0C0A83E3A58",
363 "BF6C1DC069FB95D05D43B01D8206D66B",
364 "046D1D580D5898DA6595F32FD1F0C33D",
365 "5F57803B7B82A110F7E9855D6A546082",
366 "25336ECF34E7BE97862CDFF715FF05A8",
367 "ACBAA2A943D8078022D693890E8C4FEF",
368 "3947597879F6B58E4E2F0DF825A83A38",
369 "4EB8CC3335496130655BF3CA570A4FC0",
370 "BBDA7769AD1FDA425E18332D97868824",
371 "5E7532D22DDB0829A29C868198397154",
372 "E66DA67B630AB7AE3E682855E1A1698E",
373 "4D93800F671B48559A64D1EA030A590A",
374 "F33159FCC7D9AE30C062CD3B322AC764",
375 "8BAE4EFB70D33A9792EEA9BE70889D72"
376 },
377
378 {
379 "E35A6DCB19B201A01EBCFA8AA22B5759",
380 "5075C2405B76F22F553488CAE47CE90B",
381 "49DF95D844A0145A7DE01C91793302D3",
382 "E7396D778E940B8418A86120E5F421FE",
383 "05F535C36FCEDE4657BE37F4087DB1EF",
384 "D0C1DDDD10DA777C68AB36AF51F2C204",
385 "1C55FB811B5C6464C4E5DE1535A75514",
386 "52917F3AE957D5230D3A2AF57C7B5A71",
387 "C6E3D5501752DD5E9AEF086D6B45D705",
388 "A24A9C7AF1D9B1E17E1C9A3E711B3FA7",
389 "B881ECA724A6D43DBC6B96F6F59A0D20",
390 "EC524D9A24DFFF2A9639879B83B8E137",
391 "34C4F345F5466215A037F443635D6F75",
392 "5BA5055BEDB8895F672E29F2EB5A355D",
393 "B3F692AA3A435259EBBEF9B51AD1E08D",
394 "414FEB4376F2C64A5D2FBB2ED531BA7D",
395 "A20D519E3BCA3303F07E81719F61605E",
396 "A08D10E520AF811F45BD60A2DC0DC4B1",
397 "B06893A8C563C430E6F3858826EFBBE4",
398 "0FFEE26AE2D3929C6BD9C6BEDFF84409",
399 "4D0F5E906ED77801FC0EF53EDC5F9E2B",
400 "8B6EC00119AD8B026DCE56EA7DEFE930",
401 "69026591D43363EE9D83B5007F0B484E",
402 "27135D86950C6A2F86872706279A4761",
403 "35E6DB8723F281DA410C3AC8535ED77C",
404 "57427CF214B8C28E4BBF487CCB8D0E09",
405 "6DF01BF56E5131AC87F96E99CAB86367",
406 "3856C5B55790B768BBF7D43031579BCF",
407 "1E6ED8FB7C15BC4D2F63BA7037ED44D0",
408 "E1B2ED6CD8D93D455534E401156D4BCF",
409 "EFBCCA5BDFDAD10E875F02336212CE36",
410 "0B777F02FD18DCE2646DCFE868DFAFAD",
411 "C8A104B5693D1B14F5BF1F10100BF508",
412 "4CCE6615244AFCB38408FECE219962EA",
413 "F99E7845D3A255B394C9C050CBA258B1",
414 "B4AFBB787F9BCFB7B55FDF447F611295",
415 "AE1C426A697FAF2808B7EF6ADDB5C020",
416 "7572F92811A85B9BDD38DEAD9945BCAE",
417 "71BC7AA46E43FB95A181527D9F6A360F",
418 "5542EF2923066F1EC8F546DD0D8E7CA8",
419 "6B92317C7D623790B748FDD7EFC42422",
420 "0FE7C097E899C71EF045360F8D6C25CF",
421 "4ECE7EE107D0264D04693151C25B9DF6",
422 "FD6AE687CBFCA9E301045888D3BB9605",
423 "476B579C8556C7254424902CC1D6D36E",
424 "4133CBCDFDD6B8860A1FC18665D6D71B",
425 "3B36EC2664798C108B816812C65DFDC7",
426 "364E20A234FEA385D48DC5A09C9E70CF",
427 "4A4BA25969DE3F5EE5642C71AAD0EFD1",
428 "E42CBAAE43297F67A76C1C501BB79E36",
429 "23CEDEDA4C15B4C037E8C61492217937",
430 "A1719147A1F4A1A1180BD16E8593DCDE",
431 "AB82337E9FB0EC60D1F25A1D0014192C",
432 "74BF2D8FC5A8388DF1A3A4D7D33FC164",
433 "D5B493317E6FBC6FFFD664B3C491368A",
434 "BA767381586DA56A2A8D503D5F7ADA0B",
435 "E8E6BC57DFE9CCADB0DECABF4E5CF91F",
436 "3C8E5A5CDC9CEED90815D1F84BB2998C",
437 "283843020BA38F056001B2FD585F7CC9",
438 "D8ADC7426F623ECE8741A70621D28870",
439 "D7C5C215592D06F00E6A80DA69A28EA9",
440 "52CF6FA433C3C870CAC70190358F7F16",
441 "F63D442A584DA71786ADEC9F3346DF75",
442 "549078F4B0CA7079B45F9A5ADAFAFD99",
443 "F2A5986EE4E9984BE2BAFB79EA8152FA",
444 "8A74535017B4DB2776668A1FAE64384C",
445 "E613342F57A97FD95DC088711A5D0ECD",
446 "3FFAEBF6B22CF1DC82AE17CD48175B01",
447 "BAFD52EFA15C248CCBF9757735E6B1CE",
448 "7AF94BC018D9DDD4539D2DD1C6F4000F",
449 "FE177AD61CA0FDB281086FBA8FE76803",
450 "74DBEA15E2E9285BAD163D7D534251B6",
451 "23DD21331B3A92F200FE56FF050FFE74",
452 "A69C5AA34AB20A858CAFA766EACED6D8",
453 "3F72BB4DF2A4F941A4A09CB78F04B97A",
454 "72CC43577E1FD5FD14622D24D97FCDCC",
455 "D83AF8EBE93E0B6B99CAFADE224937D1",
456 "44042329128D56CAA8D084C8BD769D1E",
457 "14102D72290DE4F2C430ADD1ED64BA1D",
458 "449124097B1ECD0AE7065206DF06F03C",
459 "D060A99F8CC153A42E11E5F97BD7584A",
460 "65605B3EA9261488D53E48602ADEA299",
461 "C5E5CAD7A208DE8EA6BE049EFE5C7346",
462 "4C280C46D2181646048DD5BC0C0831A5",
463 "5DD65CF37F2A0929559AABAFDA08E730",
464 "31F2335CAAF264172F69A693225E6D22",
465 "3E28B35F99A72662590DA96426DD377F",
466 "570F40F5D7B20441486578ED344343BE",
467 "C54308AD1C9E3B19F8B7417873045A8C",
468 "CBF335E39CE13ADE2B696179E8FD0CE1",
469 "9C2FBF422355D8293083D51F4A3C18A9",
470 "5ED8B5A31ECEFAB16C9AA6986DA67BCE",
471 "627815DCFC814ABC75900041B1DD7B59",
472 "9EF3E82A50A59F166260494F7A7F2CC3",
473 "878CD0D8D920888B5935D6C351128737",
474 "E44429474D6FC3084EB2A6B8B46AF754",
475 "EBAACF9641D54E1FB18D0A2BE4F19BE5",
476 "13B3BF497CEE780E123C7E193DEA3A01",
477 "6E8F381DE00A41161F0DF03B4155BFD4",
478 "35E4F29BBA2BAE01144910783C3FEF49",
479 "55B17BD66788CEAC366398A31F289FFB",
480 "11341F56C0D6D1008D28741DAA7679CE",
481 "4DF7253DF421D83358BDBE924745D98C",
482 "BAE2EE651116D93EDC8E83B5F3347BE1",
483 "F9721ABD06709157183AF3965A659D9D",
484 "19A1C252A613FE2860A4AE6D75CE6FA3",
485 "B5DDB2F5D9752C949FBDE3FFF5556C6E",
486 "81B044FCFFC78ECCFCD171AAD0405C66",
487 "C640566D3C06020EB2C42F1D62E56A9B",
488 "EA6C4BCF425291679FDFFD26A424FBCC",
489 "57F6901465D9440D9F15EE2CBA5A4090",
490 "FBCFA74CADC7406260F63D96C8AAB6B1",
491 "DFF4F096CEA211D4BBDACA033D0EC7D1",
492 "1EE5190D551F0F42F675227A381296A9",
493 "F98E1905012E580F097623C10B93054F",
494 "E7D43743D21DD3C9F168C86856558B9A",
495 "632A9DDA730DAB67593C5D08D8AC1059",
496 "E084317000715B9057BC9DE9F3AB6124",
497 "61F9EF33A0BB4E666C2ED99101919FAB",
498 "6DC1D68A11834657D46703C22578D59A",
499 "53AC1548863D3D16F1D4DC7242E05F2C",
500 "E82CD587A408306AD78CEAE0916B9F8C",
501 "0FD2D40EA6AD17A3A767F0A8600D6295",
502 "AD84CC8255ADB39DFCA23F92761AE7E9",
503 "F4F20CF7D51BEE7DA024A2B11A7ECA0B",
504 "5057691B85D9CE93A193214DB0A016B6",
505 "0F58C960876390BDEF4BB6BE95CAA1EE",
506 "9A3E66EEBC21BC0BD9430B341EF465FA",
507 "20415035F34B8BCBCB28ABF07F78F0D4",
508 "AC89FC7BA10479EBF10DE65BCEF89B3C",
509 "068FA75A30BE443171AF3F6FEB1A20D2",
510 "50E02F213246C525A8C27700CA34B502",
511 "227DA47D5A0906DB3AB042BB0A695FB6",
512 "8663AC30ED12514F1DE46777F4514BFC",
513 "A987D4BC12E1DE9F4B6DF43567C34A8B",
514 "6D5A0370F599ACA605F63B04E5143D0C",
515 "9809266E378B07B7AFDB3BAA97B7E442",
516 "8F753252B30CCCACE12D9A301F4D5090",
517 "032465F6C0CE34D41962F561692A1AFF",
518 "C50E9AD5BEB8F3B00821DD47FF8AC093",
519 "9C6FEA3D46268D54A6829B2AD25BB276",
520 "0FD8575E87706F561343D7B3A41E044A",
521 "BEE9BEB3739540D88CBCE77925F0A114",
522 "D24EAEE7FFFBAC3D6F26C2DCE0DCDE28",
523 "47771A90398FF0F7FA821C2F8F5E1398",
524 "4639741B6F84B135AD118C8249B64ED0",
525 "8EE5505EC85567697A3306F250A27720",
526 "7C8A19AC1AEFBC5E0119D91A5F05D4C2",
527 "5141B9B672E54773B672E3A6C424887B",
528 "B5A2D3CD206653C6402F34FB0AE3613D",
529 "0F5BD9408738231D114B0A82753279A3",
530 "FEF033FF4268EA487FC74C5E43A45338",
531 "A3EDC09DCD529B113910D904AD855581",
532 "AB8FBB6F27A0AC7C55B59FDD36B72F1C",
533 "EEA44D5ED4D769CC930CD83D8999EC46",
534 "6972276803AE9AA7C6F431AB10979C34",
535 "86DEAA9F39244101818178474D7DBDE9",
536 "88C6B466EA361D662D8D08CBF181F4FE",
537 "91AB2C6B7C63FF59F7CBEEBF91B20B95",
538 "2DFE6C146AD5B3D8C3C1718F13B48E01",
539 "C7CFF1623451711391A302EEC3584AAA",
540 "089FE845CC05011686C66019D18BE050",
541 "08C8410B9B427211A67124B0DCCEAD48",
542 "8D91592F5566085254784606334D7629",
543 "3298FEAAF2E1201D6299FF8846639C97",
544 "C497CB9F0BDFE0EFC8C2F3F90760AA72",
545 "2788AFD046E0309CBE4424690DA2AB89",
546 "E9891707F25EF29FEE372890D4258982",
547 "DB041D94A23D45D4D4DCED5A030CAF61",
548 "FFAFDBF0ECB18DF9EA02C27077448E6D",
549 "2DAAA42A7D0A1D3B0E4761D99CF2150A",
550 "3B7A54CB7CF30ABE263DD6ED5BFE8D63",
551 "EEFA090174C590C448A55D43648F534A",
552 "9E15798731ED42F43EA2740A691DA872",
553 "31FBD661540A5DEAAD1017CFD3909EC8",
554 "CDA9AE05F224140E28CB951721B44D6A",
555 "0C5BC512C60A1EAC3434EFB1A8FBB182",
556 "AA863610DEEEEB62D045E87EA30B59B5",
557 "6AC2448DE568D279C7EEBE1DF403920C",
558 "E2011E3D292B26888AE801215FD0CB40",
559 "E06F3E15EE3A61672D1C99BADE5B9DBE",
560 "BB7027F0548CF6712CEB4C7A4B28E178",
561 "061EC21FB70FADBDF87C3BD2AE23825B",
562 "4C21F26FE94ABBAC381352375314C3EB",
563 "F7CEE6DD99909C2B569EEDA61ED8942E",
564 "CE98C4A876C65E4CCB261EBB1D9DF7F5",
565 "A5491881CF833C3604ABC08044F402AC",
566 "A1BA16E64CCCB3087D57A768507B0BFC",
567 "D55951E202D2949EBD3BE43120C738BF",
568 "EBB8E43069E69F450EFEC65DCD52B7FD",
569 "2B292135663B4AA5ABFE9423D57E7EE9",
570 "E91BF974B3BE3AD966249D8655292A85",
571 "384365998EAA9562236CC58F6ADF9610",
572 "C2E997012AA3D4D8D359C9A947CBE69F",
573 "F49421204148BA213BE87E2D5C22B0BF",
574 "82ED0ED9953AA92E4DF30929CA65C00F",
575 "291EB1D11653C8479437C74A977F5106",
576 "BCB997B1939B8983ABD550D6025683E3",
577 "1FBA2592C6F489775CAADA71F9B983E9",
578 "969F66F217AF1A3DB9E41C1B29039824",
579 "A54BB7D6B17E423AC0A7744C19073CB8",
580 "B0AC6E6578D1021F47DCF9748A32EAD5",
581 "B87B361C3B7B194C77A4358D4669153E",
582 "46A133847F96EAA8282A799DC8899D58",
583 "2265EC3A9F2D5C9547A091CC8CFB18EA",
584 "54CBF3A6FC4FE56D426117AA1FFD1DDE",
585 "5312877CCEAB6CFB0905394A370A8003",
586 "7190BD6EC613FE38B84ECFE28F702FE4",
587 "D1FA5B9CA89A43B04C05F0EF29EF68CD",
588 "808285751548ED934FD1056D2D9AE8BA",
589 "2758DEF3E7B95A9AE89777BE64D5A6CF",
590 "07D81F87DB3E0ACC82B01E08FB22F3C1",
591 "8DA250E5553D650711A75EE1CB4FD1C7",
592 "A93D946BD0E87F32719DF5F158CEE669",
593 "03945236EC2A4D4EAF30B8ABEB54330D",
594 "11CC35301F24B79DDE31AEA2D1354F88",
595 "E73715B3E8D9A290F44AE6FFBF247E5D",
596 "7345E07732B71CB158BBF64CCA5C5B96",
597 "6E128F296D24705A1924FD9B70C4ED04",
598 "95A789776F036783FBD330947083F54F",
599 "360DEC2533EA4AA2E3E54FD3DE2906EB",
600 "E68EFD7FECF4D601EA22727BD764965B",
601 "9065C64A8BFF44AC33EDBB611CF83D7B",
602 "8F33C8DF2A7A51CE8090E8F123BC3723",
603 "807F391FFBA8291BA625623210F99018",
604 "5E8B3F3A701522CE5CAA761C929D6292",
605 "3BA404DC38735A78289E3809E8364835",
606 "D23BEDBAD229F8305DC425B6B759DCC9",
607 "44880F21CF5913040AE376AEE2A10AD8",
608 "9BC98E29D057C0E828C3B5CCE69256C1",
609 "B293CC7A975DA141A68279368057CC41",
610 "8D60FB87ACD91385B313BE5F1D7BD30F",
611 "2C8E56132D70291B303C48FDF75543CD",
612 "D1F80035B826791F6CE4E59B7DB1BB0D",
613 "42CE6224FC36469339A133DD08173BD4",
614 "61817155EA41BCBA2AF7F06AE7CBF585",
615 "D1923A9866068D2EF5FB77D57C3315B6",
616 "B37CBDB5D719F49691CA968EF2E84140",
617 "EC974E653A055D7F8F22171030F68E1D",
618 "DDE5D3B9AAD9C32213BB3675A822499C",
619 "D3B6E9216EA1AE57EB1C628A3C38AB78",
620 "82C99ECC69472B7E96324B042AE8B87A",
621 "97144DC5338C43600F84439C0AA0D147",
622 "400AC4A0BBADA1DB2121EB144C7E5209",
623 "EFD9D550EB419ED278F4885A490AB54C",
624 "2AB7816E149B7C0404C88A8857793670",
625 "5B591DFF9E8DEE15BAD24C025DBCA481",
626 "0C06633E30721C3749F49AD8CBF2B754",
627 "96D6D31A41B5123B2035FD91A921D4CA",
628 "E7F6C34D86668BC2805CA7793C5E86AD",
629 "F46DFF5FF500D6879C4D3E45CF0CF0F3",
630 "60D842D9C61DA7495C116197B7CECBBE",
631 "D45B24EDB673353EBDF248B8FA06B67A",
632 "119EAEBCC165D0BD02C0D35DC82EF992",
633 "E673143680414ADA301D0ED34626B9FE",
634 "6B6CFE160A6263631B292F879EEFF926"
635 }
636 };
637
638 private static int[] KEY_SIZES = {
639 16, 24, 32
640 };
641
642
643
644
645
646
647
648 private static SecretKey constructAESKey(int len, int rounds)
649 throws IllegalArgumentException {
650 if ((len != 16) && (len != 24) && (len != 32)) {
651 throw new IllegalArgumentException("Wrong Key Length: " + len);
652 }
653 byte[] rawKeyValue = constructKeyValue(len, rounds);
654 SecretKeySpec key = new SecretKeySpec(rawKeyValue, "AES");
655 return key;
656 }
657
658 private static byte[] constructKeyValue(int keysize, int rounds) {
659 byte[] tempKeyValue = new byte[keysize];
660 Arrays.fill(tempKeyValue, (byte)0);
661
662 int whichByte = rounds/8;
663 int whichDigit = rounds % 8;
664 if ((whichByte >= keysize) || (whichDigit < 0) ||
665 (whichDigit > 8)) {
666 throw new IllegalArgumentException("Invalid keysize/rounds " +
667 "combination :" + keysize +
668 "/" + rounds);
669 }
670 switch (whichDigit) {
671 case 0:
672 tempKeyValue[whichByte] = (byte)0x80;
673 break;
674 case 1:
675 tempKeyValue[whichByte] = (byte)0x40;
676 break;
677 case 2:
678 tempKeyValue[whichByte] = (byte)0x20;
679 break;
680 case 3:
681 tempKeyValue[whichByte] = (byte)0x10;
682 break;
683 case 4:
684 tempKeyValue[whichByte] = (byte)0x08;
685 break;
686 case 5:
687 tempKeyValue[whichByte] = (byte)0x04;
688 break;
689 case 6:
690 tempKeyValue[whichByte] = (byte)0x02;
691 break;
692 case 7:
693 tempKeyValue[whichByte] = (byte)0x01;
694 break;
695 }
696 return tempKeyValue;
697 }
698
699 private static byte[] constructByteArray(String s) {
700 int len = s.length()/2;
701 byte[] tempValue = new byte[len];
702 for (int i = 0; i < len; i++) {
703 tempValue[i] = Integer.valueOf(s.substring(2*i, 2*i+2),
704 16).byteValue();
705 }
706 return tempValue;
707 }
708
709 public boolean execute() throws Exception {
710 String transformation = ALGO+"/"+MODE+"/"+PADDING;
711 Cipher c = Cipher.getInstance(transformation, "SunJCE");
712
713 for (int i=0; i<KEY_SIZES.length; i++) {
714 if (KEY_SIZES[i]*8 >
715 Cipher.getMaxAllowedKeyLength(transformation)) {
716
717
718 continue;
719 }
720 int rounds = KEY_SIZES[i] * 8;
721 byte[] plainText = PT;
722 byte[] cipherText = null;
723 try {
724 for (int j=0; j < rounds; j++) {
725 SecretKey aesKey = constructAESKey(KEY_SIZES[i], j);
726 c.init(Cipher.ENCRYPT_MODE, aesKey);
727 cipherText = c.doFinal(plainText);
728 byte[] answer = constructByteArray(CTS[i][j]);
729 if (!Arrays.equals(cipherText, answer)) {
730 throw new Exception((i+1) + "th known answer test failed for encryption");
731 }
732 c.init(Cipher.DECRYPT_MODE, aesKey);
733 byte[] restored = c.doFinal(cipherText);
734 if (!Arrays.equals(plainText, restored)) {
735 throw new Exception((i+1) + "th known answer test failed for decryption");
736 }
737 }
738 System.out.println("Finished KAT for " + KEY_SIZES[i] + "-byte key");
739 } catch (SecurityException se) {
740 TestUtil.handleSE(se);
741 }
742 }
743
744
745 return true;
746 }
747
748 public static void main (String[] args) throws Exception {
749 Security.addProvider(new com.sun.crypto.provider.SunJCE());
750
751 TestKATForECB_VK test = new TestKATForECB_VK();
752 String testName = test.getClass().getName() + "[" + ALGO +
753 "/" + MODE + "/" + PADDING + "]";
754 if (test.execute()) {
755 System.out.println(testName + ": Passed!");
756 }
757 }
758 }